/**
 * Copyright (C) 2024-2030 Super BilGen & 超亿时代信息技术股份有限公司.All Rights Reserved.
 */
package cn.com.yang.pool;

/**
 * @Model cn.com.yang.pool.ObjectPoolExample
 * @Desc  TODO
 * @author yangyijin
 * @since 2025年3月7日-下午5:14:01
 */
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

public class ObjectPoolExample {
    public static void main(String[] args) {
        // 配置池参数
        GenericObjectPoolConfig<MyObject> poolConfig = new GenericObjectPoolConfig<>();
        poolConfig.setMaxTotal(10);  // 最大对象数
        poolConfig.setMaxIdle(5);    // 最大空闲对象数
        poolConfig.setMinIdle(1);    // 最小空闲对象数

        // 创建池并使用工厂
        MyObjectFactory factory = new MyObjectFactory();
        try (GenericObjectPool<MyObject> pool = new GenericObjectPool<>(factory, poolConfig)) {
			try {
			    // 从池中借用对象
			    MyObject obj = pool.borrowObject();
			    // 使用对象
			    obj.doSomething();
			    // 使用完成后归还对象到池中
			    pool.returnObject(obj);
			} catch (Exception e) {
			    e.printStackTrace();
			}
		}
    }
}

